package behavioralPattern.templateMethod.example02;

import java.math.BigDecimal;

/**
 * 账户抽象类
 */
public abstract class AbstractAccount {

    // step1 具体方法-验证用户信息是否正确
    public boolean validate(String account,String password){
        System.out.println("账号：" + account + ";密码" + password);
        if (account.equalsIgnoreCase("tom") &&
                password.equalsIgnoreCase("123456")){
            return true;
        }
        return false;
    }

    // step2 - 抽象 - 计算当前用户的利息
    abstract BigDecimal calculate();

    // step3 - 具体 - 显示利息
    public void display(BigDecimal amount){
        System.out.println("显示利息:" + amount);
    }

    // 模板方法
    public void handle(String account,String password){
        if (!validate(account,password)){
            System.out.println("账号或密码错误");
        }
        BigDecimal amount = calculate();
        display(amount);
    }

}
